I spent 2 years in a startup as a software engineer, we have 15 engineers and we proud of our products. Like other companies, we desire to hire the best engineers. But hiring is really hard, I remember a popular article in HN, the article quoted from Thomas Ptacek:

Hiring is really hard

Suitable candidates are hard to find

I spent 2 years in a startup as a software engineer, we have 15 engineers and we proud of our products. Like other companies, we desire to hire the best engineers. But hiring is really hard, I remember a popular article in HN, the article quoted from Thomas Ptacek:

My experience is that running a hiring process that lights up only on the kind of talent that qualifies itself with a standard tech interview is ludicrously expensive. People that do well in standard tech interviews can work anywhere they want. If you can only hire those people, you are competing for talent with the wealthiest (or most overfunded) tech companies in the market.

In the last two years, we only received 3 resumes from top schools and 2 resumes from top companies, we know why.

  1. Strong background candidates prefer to work for a big enterprise instead of a startup.
  2. We can’t offer a better salary/benefits than the big enterprise.

It’s easy to lose in this competition.

It’s hard to judge candidates in several rounds interview

Enterprises spend lots of time and money to interview candidates. In my point of view, lots of enterprises did it wrong. We wouldn’t hire a mathematician by asking them to solve a definite integral, but enterprises try to find talents by asking them to solve Leetcode problems. I’ve been searching for a job for the last month, I cracked around 130 Leetcode problems and I can always found a original Leetcode problem on the online assessment. Some enterprises claim that they want to hire a creative programmer but they can’t even come up with a creative question, I tired of solving this kind of problem again and again. What they really want are the candidates who are good at tech interview and willing to spend two months on Leetcode. Are they great programmers? Yes, some of them.

great_programmers

Most importantly, even we spend so much time and money in the tech interview, we still don’t know much about the candidate. A resume and tech interview wouldn’t tell us the candidate’s coding skills (unless it’s open source) as well as teamwork ability. Can the candidate have a good conversation with other engineers? Can the candidate be a good mentor? We don’t know because we never work with them on a real project.

How about internal referral? I can always find engineers would like to refer me even we don’t know each other before. I understand why this happened, the referrer would get a bonus once the candidate get hired. On the other hand, the candidate can get the job easier, a win-win situation? No, since they never work together, the referrer can only judge the candidates by their resumes. Therefore, this kind of internal referral has nothing to do with hire a great programmer but only turns the engineers into HR.

So, What should we do

Forget about the top school or top company, let’s recap what kind of engineers we are really looking for:

  1. People are curious, empathetic and creative.
  2. People can code, love to code and understand data structure or system design.
  3. People familiar with different kind of frameworks and used them in real-world projects.
  4. People value open communication and good teamwork.

Are we talking about open source contributors? Yes.

Hire an open source contributors

HR: “What kind of open source contributors we are talking about?”

Me: “Every programmer contributors to an open source project that your company is using.”

HR: “But there are some contributors just did some document work or even fix a typo!”

Me: “If fix a typo is that easy, we would have 7000 contributors instead of 700 in the CPython repo.”

HR: “I can do that in 20 minutes, but I don’t even know how to code!”

Me: “Welcome, contributor, lots of us started by fixing a typo, :D.”

Due to most of the core developers never available on the market, we should focus on the contributors who are underrated but have the potential to become a core developer. What’s more, when more and more people contribute to a project, it will be much harder to find a typo to fix. So the new contributor have to work for other topics which are more advanced, what a virtuous circle.

Any other reasons?

Contributors are easier to find

Instead of waiting for applications, you can search on Open Source Jobs to find the contributors who are looking for a job. Meanwhile, GitHub is also a good place to search for contributors. If your company is using Django, you can find about 900 contributors here. Since 59.8 programmers are open to new opportunities, now you have more than 500 potential Django core developers who know Django better than others.

Contributors are easier to hire

Sometimes your company can only offer an exciting project instead of a high salary. Luckily, From 2018 Open Source Jobs Report - The Linux Foundation:

Similarly, only 3% said money and perks were the best thing about their jobs, the same as last year. Thirty percent cited the ability to work on interesting projects, collaborate with a global community (19%) and the opportunity to work on the most cuttingedge technology challenges (16%). These numbers are essentially unchanged from 2016 and 2017.

moving_jobs

Most contributors contribute just because they love the project. Once an enterprise

Build an open source culture And companies are realizing that supporting open source projects can be a valuable recruiting and retention tool.

Contributors are likely to join it for a long term.

Contributors have mentors and lots of friends

Another post Who Killed The Junior Developer? points out:

But I know what companies have told me: “we don’t hire junior developers because we can’t afford to have our senior developers mentor them.”

7 months later, anything changed? No, we can only found one junior developer position in Ask HN: Who is hiring? (September 2018). How to save the junior developers? My answer is, ask them to become an open source contributor, then hire them.

I begin contributing to CPython a few months ago, I learned a lot from the Python Software Foundation and I really appreciate their work. I even discussed a document issue with Guido which only happens because I contribute to CPython. How much does it cost if a company ask Guido to mentor their developers, I don’t know. However, as long as I contribute to CPython, they will still be my mentors. Every programmer can find great mentors in the open source community when the company don’t need to pay a penny for it. What’s more, contributors can really refer some great programmers to join the company because they really worked with the candidates. Datalogue proposes a new way to hire which I think is a genius idea.

Choose an open source project from our list, or that you are passionate about, and meaningfully contribute to it.

And, of course we’d love to hire each applicant, but if the candidate doesn’t end up working for us, they aren’t left with a useless coding challenge repo, they are left with a meaningful contribution to a public, open-source project. They build their reputation with the community and have something awesome for their portfolio.

learn what the candidate considers to be a meaningful contribution and how they work with others is much more important then solve some Leetcode problems.

Conclusion

As a junior developer, you should contributor to an open source project you passionate with.
As a enterprise, you can hire open source contributors at Open Source Jobs or hire me at GitHub